package com.secxiot.provider.narcotic.dao;

import com.secxiot.provider.narcotic.dto.NarcoticPatientDrugsRecordDto;
import com.secxiot.provider.narcotic.entity.NarcoticPatientDrugsRecordDo;
import com.secxiot.provider.narcotic.vo.NarcoticPatientDrugsRecordVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 申请用药记录dao
 */
@Repository
public interface NarcoticPatientDrugsRecordMapper {

    /**
     * 用药记录查询
     *
     * @param map
     * @return
     */
    List<NarcoticPatientDrugsRecordDo> selectNarcoticPatientDrugsRecord(Map<String, Object> map);

    /**
     * 用药记录--详情
     *
     * @param patientDrugsRecordId id
     * @return NarcoticPatientDrugsRecordDo
     */
    NarcoticPatientDrugsRecordDo getNarcoticPatientDrugsRecordById(@Param("patientDrugsRecordId") Long patientDrugsRecordId);

    /**
     * 添加用药记录
     *
     * @param patientDrugsRecordDo 申请药品记录do
     * @return
     */
    Long insert(NarcoticPatientDrugsRecordDo patientDrugsRecordDo);

    /**
     * 修改用药记录
     *
     * @param patientDrugsRecordDo 申请药品记录do
     * @return
     */
    Long updateByPrimaryKey(NarcoticPatientDrugsRecordDo patientDrugsRecordDo);

    /**
     * 药品跟踪记录--详情
     *
     * @param patientDrugsRecordId 申请用药记录ID
     * @return NarcoticPatientDrugsRecordDto
     */
    NarcoticPatientDrugsRecordDto getNarcoticPatientDrugsRecordDtoById(@Param("patientDrugsRecordId") Long patientDrugsRecordId);

    /**
     * 获取正在进行的用药申请
     * @param userId
     * @return
     */
    List<NarcoticPatientDrugsRecordVo> getPatientDrugsRecordByUserId(@Param("userId") Long userId, Long drugsId);

    /**
     * 获取未审核用药记录
     * @return
     */
    List<NarcoticPatientDrugsRecordDo> timeUpdateDrugsRecordStatus(@Param("date") Date date);
}